package binbaum;
import java.util.LinkedList;

public class Traversierung{
  public static void preorderAusgabe(IBinKnoten w){
    if(w==null) return;
    System.out.print(w.datum()+" ");
    preorderAusgabe(w.lson());
    preorderAusgabe(w.rson());
  }

  public static void inorderAusgabe(IBinKnoten w){
    if(w==null) return;
    inorderAusgabe(w.lson());
    System.out.print(w.datum()+" ");
    inorderAusgabe(w.rson());
  }

  public static void postorderAusgabe(IBinKnoten w){
    if(w==null) return;
    postorderAusgabe(w.lson());
    postorderAusgabe(w.rson());
    System.out.print(w.datum()+" ");
  }

  public static void levelorderAusgabe(IBinKnoten w){
    if(w==null) return;
    LinkedList<IBinKnoten> queue=new LinkedList<IBinKnoten>();
    queue.add(w);//hinten anfügen
    while(queue.size()>0){
      w=queue.poll();//vorderstes entnehmen
      System.out.print(w.datum()+" ");
      if(w.lson()!=null) queue.add(w.lson());
      if(w.rson()!=null) queue.add(w.rson());
    }
  }

  public static void main(String[] args){
    SuchBaum bb=new SuchBaum();
    bb.insert(5);
    bb.insert(3);
    bb.insert(5);
    bb.insert(2);
    bb.insert(1);
    bb.insert(2);
    bb.insert(7);
    bb.insert(8);
    bb.insert(7);
    bb.insert(10);
    bb.insert(9);
    preorderAusgabe(bb.hohlkopf.rson);System.out.println();
    inorderAusgabe(bb.hohlkopf.rson);System.out.println();
    postorderAusgabe(bb.hohlkopf.rson);System.out.println();
    levelorderAusgabe(bb.hohlkopf.rson);System.out.println();
  }
}
